/*
 * Copyright 2019 Flipkart Internet Pvt. Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.flipkart.ohos.proteus.view.custom;

import ohos.agp.components.AttrSet;
import ohos.agp.components.Rating;
import ohos.agp.components.element.Element;
import ohos.app.Context;
import ohos.media.image.PixelMap;

/**
 * Rating bar code is full of bugs. For width of rating bar to be set correctly, sample tile width should be set
 * But since tilefy method is private and we are doing tile-fication ourselves, sample tile should be maintained by us
 * Created by kirankumar on 04/12/14.
 */
public class FixedRating extends Rating {
    private PixelMap pixelMap;

    public FixedRating(Context context, AttrSet attrs, String defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public FixedRating(Context context, AttrSet attrs) {
        super(context, attrs);
    }

    public FixedRating(Context context) {
        super(context);
    }

    public void setPixelMap(PixelMap bitmap) {
        this.pixelMap = bitmap;
    }

    @Override
    protected void setEstimateSizeListener(EstimateSizeListener listener) {
        super.setEstimateSizeListener(listener);
        new EstimateSizeListener() {
            @Override
            public boolean onEstimateSize(int i, int i1) {
                if (pixelMap != null) {
                    final int width = pixelMap.getImageInfo().size.width * getRatingItems();
                    setEstimatedSize(width, getEstimatedHeight());
                }
                return false;
            }
        };
    }


    /**
     * Taken from AOSP !!
     * Converts a Element to a tiled version of itself. It will recursively
     * traverse layer and state list Elements.
     *
     * @param element element
     * @param clip clip
     * @return return
     */
    public Element getTiledElement(Element element, boolean clip) {
        return element;
    }
}
